package br.com.velp.sudecap.mb.assunto;

import br.com.velp.sudecap.comum.BaseController;
import br.com.velp.sudecap.comum.InterfaceCadastro;
import br.com.velp.sudecap.entidade.Assunto;
import br.com.velp.sudecap.enumerator.PaginaEnum;
import br.com.velp.sudecap.service.AssuntoService;
import br.com.velp.sudecap.util.MensagemUtil;
import java.util.Date;
import org.lindbergframework.spring.scope.AccessScoped;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao> 1.0.0.0 </versao>
 * <data_criacao> 18.12.2013 </data_criacao>
 * <requisito_afetado> RF003.03 - CADASTRAR ASSUNTOS </requisito_afetado>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Classe Responsável Por Operações de Cadastro e 
 *             Edição de Assuntos
 * </descricao>
 * </sumario>
 */
@Controller("manterAssunto")
@AccessScoped
public class ManterAssunto extends BaseController implements InterfaceCadastro {
    
    private Assunto assunto;
    private boolean isDetalhamento;
    
    @Autowired
    private AssuntoService assuntoService;

    @Override
    public String setup() {
        
        this.assunto = new Assunto();
        this.isDetalhamento = Boolean.FALSE;
        
        return PaginaEnum.MANTER_ASSUNTO.getValue();
        
    }

    @Override
    public String editSetup() {
        
        this.assunto = this.assuntoService.obterPorId(this.assunto.getId());
        
        return null;
        
    }

    @Override
    public String detalhar() {
        
        editSetup();
        this.isDetalhamento = Boolean.TRUE;
        
        return PaginaEnum.MANTER_ASSUNTO.getValue();
        
    }

    @Override
    public String salvar() throws Exception {
        
        try {
            
            if (this.assunto.getId() == null) {
                
                this.assunto.setDataCadastro(new Date());
                this.assunto.setIdUsuarioCadastro(getContexto().getUsuario().getId());
                this.assuntoService.salvar(this.assunto);
                
            } else {
                
                this.assunto.setDataAlteracao(new Date());
                this.assunto.setIdUsuarioAlteracao(getContexto().getUsuario().getId());
                this.assuntoService.atualizar(this.assunto);
                
            }
            
            this.isDetalhamento = Boolean.TRUE;
            MensagemUtil.exibirMensagemInformacao(MensagemUtil.getMensagem("operacao_realizada_sucesso"));            
            
        } catch (Exception ex) {
            
            tratarExcessao(ex);
            
        }
        
        return null;
        
    }

    @Override
    public String voltar() {
        
        return PaginaEnum.CONSULTAR_ASSUNTO.getValue();
        
    }

    // <editor-fold desc="GETTERS AND SETTERS" defaultstate="collapsed">  
    public Assunto getAssunto() {
        return assunto;
    }

    public void setAssunto(Assunto assunto) {
        this.assunto = assunto;
    }

    public boolean isIsDetalhamento() {
        return isDetalhamento;
    }

    public void setIsDetalhamento(boolean isDetalhamento) {
        this.isDetalhamento = isDetalhamento;
    }
    // </editor-fold> 
    
}
